@Override
  public Modifier getModifier() {
    Modifier modifier = null;
    if (myEvaluatedArrayReference != null) {
      modifier = new Modifier() {
        @Override
        public boolean canInspect() {
          return true;
        }

        @Override
        public boolean canSetValue() {
          return true;
        }

        @Override
        public void setValue(Value value) throws ClassNotLoadedException, InvalidTypeException {
          myEvaluatedArrayReference.setValue(myEvaluatedIndex, value);
        }

        @Override
        public Type getExpectedType() throws EvaluateException {
          try {
            ArrayType type = (ArrayType)myEvaluatedArrayReference.referenceType();
            return type.componentType();
          }
          catch (ClassNotLoadedException e) {
            throw EvaluateExceptionUtil.createEvaluateException(e);
          }
        }

        @Override
        public NodeDescriptorImpl getInspectItem(Project project) {
          return new ArrayElementDescriptorImpl(project, myEvaluatedArrayReference, myEvaluatedIndex);
        }
      };
    }
    return modifier;
  }
@Override
  public Modifier getModifier()