code: public ObjectValue newInstance(SClassDefinition node,
  			PDefinition ctorDefinition, ValueList argvals, Context ctxt)
  			throws AnalysisException
  	{
  		if (node instanceof ABusClassDefinition)
  		{
  			return newInstance((ABusClassDefinition) node, ctorDefinition, argvals, ctxt);
  		} else if (node instanceof AClassClassDefinition)
  		{
  			if (node.getIsAbstract())
  			{
  				VdmRuntimeError.abort(node.getLocation(), 4000, "Cannot instantiate abstract class "
  						+ node.getName(), ctxt);
  			}
  
  			return af.createSClassDefinitionAssistant().makeNewInstance(node, ctorDefinition, argvals, ctxt, new HashMap<ILexNameToken, ObjectValue>(), false);
  			//return af.createAClassClassDefinitionAssistant().newInstance((AClassClassDefinition) node, ctorDefinition, argvals, ctxt);
  		} else if (node instanceof ACpuClassDefinition)
  		{
  			return af.createACpuClassDefinitionAssistant().newInstance((ACpuClassDefinition) node, ctorDefinition, argvals, ctxt);
  		} else if (node instanceof ASystemClassDefinition)
  		{
  			VdmRuntimeError.abort(node.getLocation(), 4135, "Cannot instantiate system class "
  					+ node.getName(), ctxt);
  		}
  
  		return null;
  	}
docs: TODO:rewrite this???