no assert in the code: throw exceptions for early problem detection
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
index eb54ac3..822d30e 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
@@ -197,8 +197,9 @@
     @SuppressWarnings("unchecked")
     @Override
     protected void callPostCreate(Node node, Object object) {
-        assert node.isTwoStepsConstruction();
-
+        if (!node.isTwoStepsConstruction()) {
+            throw new YAMLException("Inexpected recursive structure. Node: " + node);
+        }
         if (Object.class.equals(node.getType()) || "tag:yaml.org,2002:null".equals(node.getTag())) {
             super.callPostCreate(node, object);
         } else {
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Tuple.java b/src/main/java/org/yaml/snakeyaml/constructor/Tuple.java
index 45abeb4..e7c77a8 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Tuple.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Tuple.java
@@ -9,7 +9,9 @@
     private final K _2;
 
     public Tuple(T _1, K _2) {
-        assert _1 != null && _2 != null;
+        if (_1 == null || _2 == null) {
+            throw new NullPointerException("Tuple does not accept NULL.");
+        }
         this._1 = _1;
         this._2 = _2;
     }
diff --git a/src/main/java/org/yaml/snakeyaml/tokens/Token.java b/src/main/java/org/yaml/snakeyaml/tokens/Token.java
index 0daadd2..a693d80 100644
--- a/src/main/java/org/yaml/snakeyaml/tokens/Token.java
+++ b/src/main/java/org/yaml/snakeyaml/tokens/Token.java
@@ -13,8 +13,9 @@
     private final Mark endMark;
 
     public Token(Mark startMark, Mark endMark) {
-        assert startMark != null;
-        assert endMark != null;
+        if (startMark == null || endMark == null) {
+            throw new NullPointerException("Token requires marks.");
+        }
         this.startMark = startMark;
         this.endMark = endMark;
     }