@Override
  @NotNull
  public PyTargetExpressionStub deserialize(@NotNull final StubInputStream stream, final StubElement parentStub) throws IOException {
    String name = stream.readNameString();
    String docString = stream.readUTFFast();
    if (docString.isEmpty()) {
      docString = null;
    }
    PyTargetExpressionStub.InitializerType initializerType = PyTargetExpressionStub.InitializerType.fromIndex(stream.readVarInt());
    String typeComment = stream.readNameString();
    String annotation = stream.readNameString();
    final boolean hasAssignedValue = stream.readBoolean();
    if (initializerType == PyTargetExpressionStub.InitializerType.Custom) {
      CustomTargetExpressionStub stub = deserializeCustomStub(stream);
      return new PyTargetExpressionStubImpl(name, docString, typeComment, annotation, hasAssignedValue, stub, parentStub);
    }
    QualifiedName initializer = QualifiedName.deserialize(stream);
    boolean isQualified = stream.readBoolean();
    return new PyTargetExpressionStubImpl(name, docString, initializerType, initializer, isQualified, typeComment, annotation,
                                          hasAssignedValue, parentStub);
  }
@Override
  @NotNull
  public PyTargetExpressionStub deserialize(@NotNull final StubInputStream stream, final StubElement parentStub)