private object ReadExpression()

in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Metadata/FSharpMetadataReader.cs [1115:1219]


    private object ReadExpression()
    {
      var tag = ReadByteTagValue(13);
      if (tag == 0)
      {
        ReadConst();
        ReadType();
      }

      else if (tag == 1)
      {
        ReadValueRef();
        ReadValueRefFlags();
      }

      else if (tag == 2)
      {
        ReadOperation();
        ReadTypes();
        ReadArray(ReadExpressionFunc);
      }

      else if (tag == 3)
      {
        ReadExpression();
        ReadExpression();
        ReadPackedInt();
      }

      else if (tag == 4)
      {
        ReadOption(reader => reader.ReadValue());
        ReadOption(reader => reader.ReadValue());
        ReadArray(reader => reader.ReadValue());
        ReadExpression();
        ReadType();
      }

      else if (tag == 5)
      {
        ReadArray(reader => reader.ReadTypeParameterSpec());
        ReadExpression();
        ReadType();
      }

      else if (tag == 6)
      {
        ReadExpression();
        ReadType();
        ReadTypes();
        ReadArray(ReadExpressionFunc);
      }

      else if (tag == 7)
      {
        ReadArray(reader => reader.ReadBinding());
        ReadExpression();
      }

      else if (tag == 8)
      {
        ReadBinding();
        ReadExpression();
      }

      else if (tag == 9)
      {
        ReadDecisionTree();
        ReadArray(reader => reader.ReadTuple2(reader => reader.ReadValue(), ReadExpressionFunc));
        ReadType();
      }

      else if (tag == 10)
      {
        ReadType();
        ReadOption(reader => reader.ReadValue());
        ReadExpression();
        ReadArray(reader => reader.ReadObjectExpressionMethod());
        ReadArray(reader =>
          reader.ReadTuple2(
            ReadTypeFunc,
            reader => reader.ReadArray(reader => reader.ReadObjectExpressionMethod())));
      }

      else if (tag == 11)
      {
        ReadArray(reader => reader.ReadStaticOptimizationConstraint());
        ReadExpression();
        ReadExpression();
      }

      else if (tag == 12)
      {
        ReadArray(reader => reader.ReadTypeParameterSpec());
        ReadExpression();
      }

      else if (tag == 13)
      {
        ReadExpression();
        ReadType();
      }

      return null;
    }