code: public Object eval( CallStack callstack, Interpreter interpreter) throws EvalError {
          if ( null != types )
              return types;
  
          types = new Class[countTypes()];
          if ( isUntyped() )
              types[0] = UNTYPED;
          else for ( int i=0; i< countTypes(); i++ )
              types[i] = ((BSHType) jjtGetChild(i)).getType( callstack, interpreter );
  
          return types;
      }
  
      public Class<?>[] getTypes() {
          return this.types;
      }
  }
docs: Evaluate the types.