@Override
    public Object execute() throws Throwable {
        // System.out.println("Executing Set Value Command");
        if (!(target instanceof FieldAccessCommand) && target instanceof Command) {
            // System.out.println("Resolving Target...");
            target = ((Command) target).execute();
        }
        if (value instanceof Command) {
            // System.out.println("Resolving Value...");
            value = ((Command) value).execute();
        }

        if (target instanceof InternalVariable) {
            // System.out.println("Internal Variable Setting");
            ((InternalVariable) target).setVariableValue(value);
        } else if (target instanceof FieldAccessCommand) {
            System.out.println("Setting a field");
            setFieldValue((FieldAccessCommand) target, value);
            target = ((Command) target).execute();
        } else {
            System.out.println("Not Internal! Don't know how to do this yet! :(");
        }

        return (target);
    }