package org.jetbrains.debugger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.debugger.values.Value; public class VariableImpl implements Variable { protected volatile Value value; private final String name; private final ValueModifier valueModifier; public VariableImpl(@NotNull String name, @Nullable Value value, @Nullable ValueModifier valueModifier) { this.name = name; this.value = value; this.valueModifier = valueModifier; } public VariableImpl(@NotNull String name, @NotNull Value value) { this(name, value, null); } @Nullable @Override public final ValueModifier getValueModifier() { return valueModifier; } @NotNull @Override public final String getName() { return name; } @Nullable @Override public final Value getValue() { return value; } @Override public void setValue(Value value) { this.value = value; } @Override public boolean isMutable() { return valueModifier != null; } @Override public boolean isReadable() { return true; } @Override public String toString() { return "[Variable: name=" + getName() + ", value=" + getValue() + ']'; } }