private void ProcessMessageExpression(CodeModel model, MessageExpression expression) { // TODO implements weakSubclass if (expression.Selector.StartsWith("subclass:") || expression.Selector.StartsWith("weakSubclass:") || expression.Selector.StartsWith("variableSubclass:")) { bool isvariable = expression.Selector.StartsWith("variableSubclass:"); SymbolExpression symbol = (SymbolExpression)expression.Arguments.First(); VariableExpression variable = (VariableExpression)expression.Target; ClassModel super = null; if (variable.Name != null && variable.Name != symbol.Symbol) //// TODO review quick hack if class is not defined yet if (model.HasClass(variable.Name)) super = model.GetClass(variable.Name); ClassModel @class; if (super != null || variable.Name == null) @class = new ClassModel(symbol.Symbol, super, GetInstanceVariableNames(expression), GetClassVariableNames(expression), isvariable, GetPoolDictionariesNames(expression), GetCategory(expression)); else @class = new ClassModel(symbol.Symbol, variable.Name, GetInstanceVariableNames(expression), GetClassVariableNames(expression), isvariable, GetPoolDictionariesNames(expression), GetCategory(expression)); model.AddElement(@class); } }