public void ProcessTypeArg(object a) { if (a is Prototype) { AddParent((Prototype)a); } else if (a is Symbol) { var type = Runtime.GetType((Symbol)a) as Prototype; if (type == null) { throw new LispException("Type not found or not a prototype/structure: {0}", a); } AddParent(type); } else { throw new LispException("Invalid type specifier in prototype constructor: {0}", a); } }