Bug 568167: [RJ-Data] Add nullable annotations to R data store
interfaces

Change-Id: I89bdc88fae76535538e63530c54c2ce29d7b626a
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RCharacterStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RCharacterStore.java
index 0609f1a..f49c2ab 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RCharacterStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RCharacterStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * Interface for R data stores of type {@link RStore#CHARACTER}.
@@ -21,15 +24,16 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'character'.</p>
  */
+@NonNullByDefault
 public interface RCharacterStore extends RStore<String> {
 	
 	
 	@Override
-	String get(int idx);
+	@Nullable String get(int idx);
 	@Override
-	String get(long idx);
+	@Nullable String get(long idx);
 	
 	@Override
-	String[] toArray();
+	@Nullable String [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RComplexStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RComplexStore.java
index 79921a4..20cc1fd 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RComplexStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RComplexStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RComplexStore.Complex;
 
 
@@ -23,6 +26,7 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'complex'.</p>
  */
+@NonNullByDefault
 public interface RComplexStore extends RStore<Complex> {
 	
 	
@@ -56,7 +60,7 @@
 		}
 		
 		@Override
-		public boolean equals(final Object obj) {
+		public boolean equals(final @Nullable Object obj) {
 			if (!(obj instanceof Complex)) {
 				return false;
 			}
@@ -83,11 +87,11 @@
 	boolean isNaN(long idx);
 	
 	@Override
-	Complex get(int idx);
+	@Nullable Complex get(int idx);
 	@Override
-	Complex get(long idx);
+	@Nullable Complex get(long idx);
 	
 	@Override
-	Complex[] toArray();
+	@Nullable Complex [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RFactorStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RFactorStore.java
index 94b0b72..5a9f45f 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RFactorStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RFactorStore.java
@@ -14,6 +14,8 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 
 /**
  * Interface for R data stores of type {@link RStore#FACTOR}.
@@ -21,6 +23,7 @@
  * An R data store implements this interface if the R function
  * <code>class(object)</code> returns 'factor'.</p>
  */
+@NonNullByDefault
 public interface RFactorStore extends RIntegerStore {
 	
 	// TODO Docu && Constructors (-> 1-based codes)
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RIntegerStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RIntegerStore.java
index 8229bec..2d12ec8 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RIntegerStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RIntegerStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * Interface for R data stores of type {@link RStore#INTEGER}.
@@ -21,15 +24,16 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'integer'.</p>
  */
+@NonNullByDefault
 public interface RIntegerStore extends RStore<Integer> {
 	
 	
 	@Override
-	Integer get(int idx);
+	@Nullable Integer get(int idx);
 	@Override
-	Integer get(long idx);
+	@Nullable Integer get(long idx);
 	
 	@Override
-	Integer[] toArray();
+	@Nullable Integer [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RLogicalStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RLogicalStore.java
index 49b16ad..af7018a 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RLogicalStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RLogicalStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * Interface for R data stores of type {@link RStore#LOGICAL}.
@@ -21,15 +24,16 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'logical'.</p>
  */
+@NonNullByDefault
 public interface RLogicalStore extends RStore<Boolean> {
 	
 	
 	@Override
-	Boolean get(int idx);
+	@Nullable Boolean get(int idx);
 	@Override
-	Boolean get(long idx);
+	@Nullable Boolean get(long idx);
 	
 	@Override
-	Boolean[] toArray();
+	@Nullable Boolean [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RNumericStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RNumericStore.java
index 28a6810..660a57b 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RNumericStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RNumericStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * Interface for R data stores of type {@link RStore#NUMERIC}.
@@ -21,6 +24,7 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'double'.</p>
  */
+@NonNullByDefault
 public interface RNumericStore extends RStore<Double> {
 	
 	
@@ -28,11 +32,11 @@
 	boolean isNaN(long idx);
 	
 	@Override
-	Double get(int idx);
+	@Nullable Double get(int idx);
 	@Override
-	Double get(long idx);
+	@Nullable Double get(long idx);
 	
 	@Override
-	Double[] toArray();
+	@Nullable Double [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RObjectFactory.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RObjectFactory.java
index 0c499da..07ad2ef 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RObjectFactory.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RObjectFactory.java
@@ -56,19 +56,19 @@
 	<TData extends RStore<?>> RVector<TData> createVector(TData data);
 	<TData extends RStore<?>> RArray<TData> createArray(TData data, int[] dim);
 	<TData extends RStore<?>> RArray<TData> createMatrix(TData data, int dim1, int dim2);
-	RList createList(RObject[] components, String @Nullable [] names);
+	RList createList(RObject [] components, @Nullable String @Nullable[] names);
 //	RDataFrame createDataFrame(RData[] columns, String[] columnNames, String[] rowNames);
 	
 	RLanguage createName(String name);
 	RLanguage createExpression(String expr);
 	
-	RLogicalStore createLogiData(boolean[] logiValues);
-	RIntegerStore createIntData(int[] intValues);
-	RNumericStore createNumData(double[] numValues);
-	RComplexStore createCplxData(double[] reValues, double[] imValues);
-	RCharacterStore createCharData(String[] charValues);
-	RRawStore createRawData(byte[] values);
-	RFactorStore createFactorData(int[] codes, String[] levels);
+	RLogicalStore createLogiData(boolean [] logiValues);
+	RIntegerStore createIntData(int [] intValues);
+	RNumericStore createNumData(double [] numValues);
+	RComplexStore createCplxData(double [] reValues, double [] imValues);
+	RCharacterStore createCharData(@Nullable String [] charValues);
+	RRawStore createRawData(byte [] values);
+	RFactorStore createFactorData(int[] codes, String [] levels);
 	
 	void writeObject(RObject object, RJIO io) throws IOException;
 	RObject readObject(RJIO io) throws IOException;
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RRawStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RRawStore.java
index e190cbb..9a46da6 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RRawStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RRawStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 
 /**
  * Interface for R data stores of type {@link RStore#RAW}.
@@ -21,6 +24,7 @@
  * An R data store implements this interface if the R function
  * <code>typeof(object)</code> returns 'raw'.</p>
  */
+@NonNullByDefault
 public interface RRawStore extends RStore<Byte> {
 	
 	
@@ -30,6 +34,7 @@
 	Byte get(long idx);
 	
 	@Override
-	Byte[] toArray();
+	@SuppressWarnings("null")
+	@NonNull Byte [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RStore.java
index 7953492..4a41c9a 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/RStore.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * This is the abstract one-dimensional data store for an R data type.
@@ -45,6 +48,7 @@
  * <p>
  * Indexes are zero-based (as usual in Java) and not one-base like in R.</p>
  */
+@NonNullByDefault
 public interface RStore<P> {
 	
 	
@@ -627,7 +631,7 @@
 	 * @throws IndexOutOfBoundsException if the index is out of range
 	 *     (idx &lt; 0 || idx &gt;= length()).
 	 */
-	P get(int idx);
+	@Nullable P get(int idx);
 	
 	/**
 	 * Returns the value at the specified index as Java object. The subtypes of
@@ -641,7 +645,7 @@
 	 * @throws IndexOutOfBoundsException if the index is out of range
 	 *     (idx &lt; 0 || idx &gt;= length()).
 	 */
-	P get(long idx);
+	@Nullable P get(long idx);
 	
 	/**
 	 * Returns the values of the store as Java object array. The subtypes of
@@ -653,7 +657,7 @@
 	 * 
 	 * @return a object array with the values of the store
 	 */
-	P[] toArray();
+	@Nullable P [] toArray();
 	
 	boolean allEqual(RStore<?> other);
 	
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractCharacterStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractCharacterStore.java
index 0cd2fab..a5b3c67 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractCharacterStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractCharacterStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RCharacterStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractCharacterStore extends AbstractRStore<String>
 		implements RCharacterStore {
 	
@@ -120,7 +124,7 @@
 	
 	
 	@Override
-	public abstract String[] toArray();
+	public abstract @Nullable String [] toArray();
 	
 	
 	@Override
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractComplexStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractComplexStore.java
index 5fad475..453e532 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractComplexStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractComplexStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RComplexStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractComplexStore extends AbstractRStore<RComplexStore.Complex>
 		implements RComplexStore {
 	
@@ -66,6 +70,6 @@
 	
 	
 	@Override
-	public abstract Complex[] toArray();
+	public abstract @Nullable Complex [] toArray();
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractFactorStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractFactorStore.java
index 3c45d0d..c661208 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractFactorStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractFactorStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RFactorStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractFactorStore extends AbstractRStore<Integer>
 		implements RFactorStore {
 	
@@ -84,7 +88,7 @@
 	
 	
 	@Override
-	public abstract Integer[] toArray();
+	public abstract @Nullable Integer [] toArray();
 	
 	
 }
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractIntegerStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractIntegerStore.java
index 285aff7..7e4b5ce 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractIntegerStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractIntegerStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RIntegerStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractIntegerStore extends AbstractRStore<Integer>
 		implements RIntegerStore {
 	
@@ -104,7 +108,7 @@
 	
 	
 	@Override
-	public abstract Integer[] toArray();
+	public abstract @Nullable Integer [] toArray();
 	
 	
 	@Override
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractLogicalStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractLogicalStore.java
index a218cce..a634d38 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractLogicalStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractLogicalStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RLogicalStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractLogicalStore extends AbstractRStore<Boolean>
 		implements RLogicalStore {
 	
@@ -81,9 +85,6 @@
 	
 	@Override
 	public long indexOf(final String character, final long fromIdx) {
-		if (character == null) {
-			throw new NullPointerException();
-		}
 		try {
 			return indexOf(AbstractCharacterStore.toLogi(character) ? 1 : 0, fromIdx);
 		}
@@ -114,7 +115,7 @@
 	
 	
 	@Override
-	public abstract Boolean[] toArray();
+	public abstract @Nullable Boolean [] toArray();
 	
 	
 	@Override
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractNumericStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractNumericStore.java
index 27f534d..466db28 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractNumericStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractNumericStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RNumericStore;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractNumericStore extends AbstractRStore<Double>
 		implements RNumericStore {
 	
@@ -30,7 +34,9 @@
 		else if (num == Double.NEGATIVE_INFINITY) {
 			return "-Inf"; //$NON-NLS-1$
 		}
-		return Double.toString(num);
+		else {
+			return Double.toString(num);
+		}
 	}
 	
 	
@@ -117,7 +123,7 @@
 	
 	
 	@Override
-	public abstract Double[] toArray();
+	public abstract @Nullable Double [] toArray();
 	
 	
 	@Override
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractRawStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractRawStore.java
index e5fe280..f4be076 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractRawStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/AbstractRawStore.java
@@ -14,11 +14,15 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RRawStore;
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public abstract class AbstractRawStore extends AbstractRStore<Byte>
 		implements RRawStore {
 	
@@ -95,6 +99,10 @@
 	
 	
 	@Override
+	public abstract @NonNull Byte [] toArray();
+	
+	
+	@Override
 	public long indexOfNA(final long fromIdx) {
 		return -1;
 	}
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/DefaultRObjectFactory.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/DefaultRObjectFactory.java
index 46d75a7..71f7411 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/DefaultRObjectFactory.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/DefaultRObjectFactory.java
@@ -17,6 +17,8 @@
 import java.io.IOException;
 import java.io.ObjectInput;
 
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
 import org.eclipse.statet.rj.data.RArray;
@@ -38,6 +40,7 @@
 import org.eclipse.statet.rj.data.RVector;
 
 
+@NonNullByDefault
 public class DefaultRObjectFactory implements RObjectFactory {
 	
 	
@@ -96,7 +99,7 @@
 	 * @param logicals the logical values
 	 * @return the R logical vector
 	 */
-	public RVector<RLogicalStore> createLogiVector(final boolean[] logicals) {
+	public RVector<RLogicalStore> createLogiVector(final boolean [] logicals) {
 		return createVector(createLogiData(logicals), RObject.CLASSNAME_LOGICAL);
 	}
 	
@@ -126,7 +129,7 @@
 	 * @param integers the integer values
 	 * @return the R integer vector
 	 */
-	public RVector<RIntegerStore> createIntVector(final int[] integers) {
+	public RVector<RIntegerStore> createIntVector(final int [] integers) {
 		return createVector(createIntData(integers), RObject.CLASSNAME_INTEGER);
 	}
 	
@@ -156,7 +159,7 @@
 	 * @param numerics the numerics values
 	 * @return the R numeric vector
 	 */
-	public RVector<RNumericStore> createNumVector(final double[] numerics) {
+	public RVector<RNumericStore> createNumVector(final double [] numerics) {
 		return createVector(createNumData(numerics), RObject.CLASSNAME_NUMERIC);
 	}
 	
@@ -201,7 +204,7 @@
 	 * @param characters the characters values
 	 * @return the R character vector
 	 */
-	public RVector<RCharacterStore> createCharVector(final String[] characters) {
+	public RVector<RCharacterStore> createCharVector(final @Nullable String [] characters) {
 		return createVector(createCharData(characters), RObject.CLASSNAME_CHARACTER);
 	}
 	
@@ -246,7 +249,7 @@
 	 * @param levels the labels of the levels
 	 * @return the R factor vector
 	 */
-	public RVector<RFactorStore> createFactorVector(final int[] codes, final String[] levels) {
+	public RVector<RFactorStore> createFactorVector(final int [] codes, final String [] levels) {
 		return createVector(createFactorData(codes, levels), RObject.CLASSNAME_FACTOR);
 	}
 	
@@ -259,7 +262,7 @@
 	 * @param levels the labels of the levels
 	 * @return the R factor vector
 	 */
-	public RVector<RFactorStore> createFactorVector(final int length, final String[] levels) {
+	public RVector<RFactorStore> createFactorVector(final int length, final String [] levels) {
 		return createVector(createFactorData(length, levels), RObject.CLASSNAME_FACTOR);
 	}
 	
@@ -274,7 +277,7 @@
 	 * @param levels the labels of the levels
 	 * @return the R factor vector
 	 */
-	public RVector<RFactorStore> createOrderedVector(final int[] codes, final String[] levels) {
+	public RVector<RFactorStore> createOrderedVector(final int [] codes, final String [] levels) {
 		return createVector(createOrderedData(codes, levels), RObject.CLASSNAME_ORDERED);
 	}
 	
@@ -287,7 +290,7 @@
 	 * @param levels the labels of the levels
 	 * @return the R factor vector
 	 */
-	public RVector<RFactorStore> createOrderedVector(final int length, final String[] levels) {
+	public RVector<RFactorStore> createOrderedVector(final int length, final String [] levels) {
 		return createVector(createOrderedData(length, levels), RObject.CLASSNAME_ORDERED);
 	}
 	
@@ -310,7 +313,7 @@
 	}
 	
 	
-	public RArray<RLogicalStore> createLogiArray(final boolean[] logicals, final int[] dim) {
+	public RArray<RLogicalStore> createLogiArray(final boolean [] logicals, final int[] dim) {
 		return createArray(createLogiData(logicals), dim);
 	}
 	
@@ -318,7 +321,7 @@
 		return createArray(createLogiData(RDataUtils.computeLengthFromDim(dim)), dim);
 	}
 	
-	public RArray<RIntegerStore> createIntArray(final int[] integers, final int[] dim) {
+	public RArray<RIntegerStore> createIntArray(final int [] integers, final int[] dim) {
 		return createArray(createIntData(integers), dim);
 	}
 	
@@ -326,7 +329,7 @@
 		return createArray(createIntData(RDataUtils.computeLengthFromDim(dim)), dim);
 	}
 	
-	public RArray<RNumericStore> createNumArray(final double[] numerics, final int[] dim) {
+	public RArray<RNumericStore> createNumArray(final double [] numerics, final int[] dim) {
 		return createArray(createNumData(numerics), dim);
 	}
 	
@@ -334,7 +337,7 @@
 		return createArray(createNumData(RDataUtils.computeLengthFromDim(dim)), dim);
 	}
 	
-	public RArray<RCharacterStore> createCharArray(final String[] characters, final int[] dim) {
+	public RArray<RCharacterStore> createCharArray(final @Nullable String [] characters, final int[] dim) {
 		return createArray(createCharData(characters), dim);
 	}
 	
@@ -343,7 +346,7 @@
 	}
 	
 	
-	public RArray<RLogicalStore> createLogiMatrix(final boolean[] logicals, final int dim1, final int dim2) {
+	public RArray<RLogicalStore> createLogiMatrix(final boolean [] logicals, final int dim1, final int dim2) {
 		return createMatrix(createLogiData(logicals), dim1, dim2);
 	}
 	
@@ -351,7 +354,7 @@
 		return createMatrix(createLogiData(dim1*dim2), dim1, dim2);
 	}
 	
-	public RArray<RIntegerStore> createIntMatrix(final int[] integers, final int dim1, final int dim2) {
+	public RArray<RIntegerStore> createIntMatrix(final int [] integers, final int dim1, final int dim2) {
 		return createMatrix(createIntData(integers), dim1, dim2);
 	}
 	
@@ -359,7 +362,7 @@
 		return createMatrix(createIntData(dim1*dim2), dim1, dim2);
 	}
 	
-	public RArray<RNumericStore> createNumMatrix(final double[] numerics, final int dim1, final int dim2) {
+	public RArray<RNumericStore> createNumMatrix(final double [] numerics, final int dim1, final int dim2) {
 		return createMatrix(createNumData(numerics), dim1, dim2);
 	}
 	
@@ -367,7 +370,7 @@
 		return createMatrix(createNumData(dim1*dim2), dim1, dim2);
 	}
 	
-	public RArray<RCharacterStore> createCharMatrix(final String[] characters, final int dim1, final int dim2) {
+	public RArray<RCharacterStore> createCharMatrix(final @Nullable String [] characters, final int dim1, final int dim2) {
 		return createMatrix(createCharData(characters), dim1, dim2);
 	}
 	
@@ -378,11 +381,14 @@
 	
 	/*-- DataFrame --*/
 	
-	public RDataFrame createDataFrame(final RStore<?>[] colDatas, final String[] colNames) {
+	public RDataFrame createDataFrame(final @NonNull RStore<?> [] colDatas,
+			final @NonNull String [] colNames) {
 		return createDataFrame(colDatas, colNames, null);
 	}
 	
-	public RDataFrame createDataFrame(final RStore<?>[] colDatas, final String[] colNames, final String[] rowNames) {
+	public RDataFrame createDataFrame(final @NonNull RStore<?> [] colDatas,
+			final @NonNull String [] colNames,
+			final String @Nullable[] rowNames) {
 		final RObject[] colVectors= new RObject[colDatas.length];
 		for (int i= 0; i < colVectors.length; i++) {
 			colVectors[i]= createVector(colDatas[i]);
@@ -390,18 +396,19 @@
 		return createDataFrame(colVectors, colNames, rowNames);
 	}
 	
-	public RDataFrame createDataFrame(final RObject[] colVectors,
-			final String[] colNames, final String[] rowNames) {
+	public RDataFrame createDataFrame(final RObject [] colVectors,
+			final @NonNull String [] colNames, final String @Nullable[] rowNames) {
 		return new RDataFrame32Impl(colVectors, RObject.CLASSNAME_DATAFRAME, colNames, rowNames);
 	}
 	
 	
-	public RList createList(final RObject[] components, final String @Nullable [] names, final String classname) {
+	public RList createList(final RObject [] components, final @Nullable String @Nullable[] names,
+			final String classname) {
 		return new RList32Impl(components, classname, names);
 	}
 	
 	@Override
-	public RList createList(final RObject[] components, final String @Nullable [] names) {
+	public RList createList(final RObject [] components, final @Nullable String @Nullable[] names) {
 		return createList(components, names, RObject.CLASSNAME_LIST);
 	}
 	
@@ -422,7 +429,7 @@
 	/*-- Data/RStore --*/
 	
 	@Override
-	public RLogicalStore createLogiData(final boolean[] logiValues) {
+	public RLogicalStore createLogiData(final boolean [] logiValues) {
 		return new RLogicalByte32Store(logiValues);
 	}
 	
@@ -433,7 +440,7 @@
 	}
 	
 	@Override
-	public RIntegerStore createIntData(final int[] intValues) {
+	public RIntegerStore createIntData(final int [] intValues) {
 		return new RInteger32Store(intValues);
 	}
 	
@@ -444,7 +451,7 @@
 	}
 	
 	@Override
-	public RNumericStore createNumData(final double[] numValues) {
+	public RNumericStore createNumData(final double [] numValues) {
 		return new RNumericB32Store(numValues);
 	}
 	
@@ -455,7 +462,7 @@
 	}
 	
 	@Override
-	public RComplexStore createCplxData(final double[] reValues, final double[] imValues) {
+	public RComplexStore createCplxData(final double [] reValues, final double [] imValues) {
 		return new RComplexB32Store(reValues, imValues, null);
 	}
 	
@@ -466,7 +473,7 @@
 	}
 	
 	@Override
-	public RCharacterStore createCharData(final String[] charValues) {
+	public RCharacterStore createCharData(final @Nullable String [] charValues) {
 		return new RCharacter32Store(charValues);
 	}
 	
@@ -477,7 +484,7 @@
 	}
 	
 	@Override
-	public RRawStore createRawData(final byte[] rawValues) {
+	public RRawStore createRawData(final byte [] rawValues) {
 		return new RRaw32Store(rawValues);
 	}
 	
@@ -488,19 +495,19 @@
 	}
 	
 	@Override
-	public RFactorStore createFactorData(final int[] codes, final String[] levels) {
+	public RFactorStore createFactorData(final int [] codes, final String [] levels) {
 		return new RFactor32Store(codes, false, levels);
 	}
 	
-	public RFactorStore createFactorData(final int length, final String[] levels) {
+	public RFactorStore createFactorData(final int length, final String [] levels) {
 		return new RFactor32Store(length, false, levels);
 	}
 	
-	public RFactorStore createOrderedData(final int[] codes, final String[] levels) {
+	public RFactorStore createOrderedData(final int [] codes, final String [] levels) {
 		return new RFactor32Store(codes, true, levels);
 	}
 	
-	public RFactorStore createOrderedData(final int length, final String[] levels) {
+	public RFactorStore createOrderedData(final int length, final String [] levels) {
 		return new RFactor32Store(length, true, levels);
 	}
 	
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/ExternalizableRStore.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/ExternalizableRStore.java
index 8a9445f..a645c80 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/ExternalizableRStore.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/ExternalizableRStore.java
@@ -16,9 +16,12 @@
 
 import java.io.IOException;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.rj.data.RJIO;
 
 
+@NonNullByDefault
 public interface ExternalizableRStore {
 	
 	
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RDataResizeExtension.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RDataResizeExtension.java
index a2eff09..d38a8ae 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RDataResizeExtension.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RDataResizeExtension.java
@@ -14,13 +14,18 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 import org.eclipse.statet.rj.data.RStore;
 
 
+@NonNullByDefault
 public interface RDataResizeExtension<P> extends RStore<P> {
 	
+	
 	void remove(int idx);
 	void remove(int[] idxs);
+	
 	void insertNA(int idx);
 	void insertNA(int[] idxs);
 	
diff --git a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RMissingImpl.java b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RMissingImpl.java
index a8b4abd..b77c91a 100644
--- a/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RMissingImpl.java
+++ b/core/org.eclipse.statet.rj.data/src/org/eclipse/statet/rj/data/impl/RMissingImpl.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.rj.data.impl;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 import org.eclipse.statet.rj.data.RList;
 import org.eclipse.statet.rj.data.RObject;
 import org.eclipse.statet.rj.data.RStore;
@@ -24,6 +27,7 @@
  * 
  * @since de.walware.rj.data 0.5
  */
+@NonNullByDefault
 public class RMissingImpl implements RObject {
 	
 	
@@ -56,12 +60,12 @@
 	}
 	
 	@Override
-	public RStore<?> getData() {
+	public @Nullable RStore<?> getData() {
 		return null;
 	}
 	
 	@Override
-	public RList getAttributes() {
+	public @Nullable RList getAttributes() {
 		return null;
 	}
 	
@@ -71,7 +75,7 @@
 	}
 	
 	@Override
-	public boolean equals(final Object obj) {
+	public boolean equals(final @Nullable Object obj) {
 		return (this == obj || (
 				(obj instanceof RObject) && ((RObject) obj).getRObjectType() == RObject.TYPE_MISSING) );
 	}