return _exp;
}
public TypeNode parseTypeOperand() {
final String _id;
TypeNode _base;
TypeNode[] _args;
TypeNode _exp;
this.eatWhitespace();
_id = this.parseIdentifier();
if (_id != null) {
if (st.gravel.support.jvm.ReadStreamExtensions.peekFor_(_stream, '.')) {
String[] _arr;
_arr = st.gravel.support.jvm.ArrayFactory.with_with_(_id, Parser.this.parseIdentifier());
boolean _temp1 = true;
while (_temp1) {
_temp1 = st.gravel.support.jvm.ReadStreamExtensions.peekFor_(_stream, '.');
if (_temp1) {
_arr = st.gravel.support.jvm.ArrayExtensions.copyWith_(_arr, Parser.this.parseIdentifier());
}
}
_base = NamespacedTypeVariableNode.factory.path_(_arr);
} else {
if (st.gravel.support.jvm.StringExtensions.equals_(_id, "Self")) {
_base = SelfTypeNode.factory.basicNew();
} else {
if (st.gravel.support.jvm.StringExtensions.equals_(_id, "Instance")) {
_base = InstanceTypeNode.factory.basicNew();
} else {
_base = TypeVariableNode.factory.name_(_id);
}
}
}
Parser.this.eatWhitespace();
if (st.gravel.support.jvm.ReadStreamExtensions.peekFor_(_stream, '[')) {
_args = Parser.this.parseTypeExpressionListAndClose();
_exp = GenericTypeVariableNode.factory.root_arguments_(_base, _args);
} else {
_exp = _base;
}
Parser.this.eatWhitespace();
if (st.gravel.support.jvm.CharacterExtensions.equals_(st.gravel.support.jvm.ReadStreamExtensions.peek(_stream), 'd')) {
final String _defString;
_defString = st.gravel.support.jvm.ReadStreamExtensions.next_(_stream, 3);
st.gravel.support.jvm.ObjectExtensions.assert_(Parser.this, st.gravel.support.jvm.StringExtensions.equals_(_defString, "def"));
return _exp.asDefNode();
} else {
return _exp;
}
}
if (st.gravel.support.jvm.ReadStreamExtensions.peekFor_(_stream, '[')) {