@Override
public Token eval(AbstractClass<?> caller, Token first, Token last, AbstractFrame frame) throws ArrayIndexOutOfBoundsException, IllegalArgumentException, InterpreterException {
Variable<?> f = (Variable<?>) (first.getCar() instanceof String ? frame.readVariable((String) first.getCar()).getCar() : first.getCar());
if (!(f instanceof AbstractObject<?>))
throw new UnexpectedTokenException("Expected an object, got a " + f.getType() + ". ");
return f.eval(caller, (Token) last.getCar(), frame);
}