177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle/*
277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * Copyright (C) 2015 The Android Open Source Project
377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle *
477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * Licensed under the Apache License, Version 2.0 (the "License");
577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * you may not use this file except in compliance with the License.
677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * You may obtain a copy of the License at
777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle *
877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle *      http://www.apache.org/licenses/LICENSE-2.0
977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle *
1077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * Unless required by applicable law or agreed to in writing, software
1177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * distributed under the License is distributed on an "AS IS" BASIS,
1277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * See the License for the specific language governing permissions and
1477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle * limitations under the License.
1577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle */
1677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
1777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravlepublic class Main {
1877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
1977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile Object objectField;
2077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile int intField;
2177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile float floatField;
2277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile long longField;
2377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile double doubleField;
2477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile byte byteField;
2577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile boolean booleanField;
2677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile char charField;
2777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  private volatile short shortField;
2877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
2977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setObjectField(Main m) {
3077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.objectField = null;
3177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
3277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
3377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setIntField(Main m) {
3477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.intField = 0;
3577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
3677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
3777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setFloatField(Main m) {
3877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.floatField = 0;
3977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
4077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
4177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setLongField(Main m) {
4277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.longField = 0;
4377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
4477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
4577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setDoubleField(Main m) {
4677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.doubleField = 0;
4777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
4877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
4977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setByteField(Main m) {
5077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.byteField = 0;
5177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
5277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
5377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setBooleanField(Main m) {
5477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.booleanField = false;
5577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
5677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
5777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setCharField(Main m) {
5877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.charField = 0;
5977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
6077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
6177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void $opt$setShortField(Main m) {
6277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    m.shortField = 0;
6377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
6477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
6577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static Object $opt$getObjectField(Main m) {
6677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.objectField;
6777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
6877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
6977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static int $opt$getIntField(Main m) {
7077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.intField;
7177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
7277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
7377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static float $opt$getFloatField(Main m) {
7477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.floatField;
7577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
7677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
7777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static long $opt$getLongField(Main m) {
7877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.longField;
7977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
8077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
8177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static double $opt$getDoubleField(Main m) {
8277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.doubleField;
8377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
8477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
8577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static byte $opt$getByteField(Main m) {
8677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.byteField;
8777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
8877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
8977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static boolean $opt$getBooleanField(Main m) {
9077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.booleanField;
9177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
9277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
9377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static char $opt$getCharField(Main m) {
9477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.charField;
9577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
9677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
9777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static short $opt$getShortField(Main m) {
9877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    return m.shortField;
9977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
10077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
10177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  public static void main(String[] args) {
10277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    int methodLine = 30;
10377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    int thisLine = 103;
10477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
10577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setObjectField(null);
10677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
10777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
10877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 2, methodLine, "$opt$setObjectField");
10977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
11077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
11177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setIntField(null);
11277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
11377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
11477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setIntField");
11577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
11677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
11777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setFloatField(null);
11877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
11977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
12077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setFloatField");
12177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
12277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
12377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setLongField(null);
12477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
12577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
12677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setLongField");
12777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
12877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
12977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setDoubleField(null);
13077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
13177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
13277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setDoubleField");
13377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
13477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
13577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setByteField(null);
13677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
13777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
13877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setByteField");
13977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
14077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
14177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setBooleanField(null);
14277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
14377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
14477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setBooleanField");
14577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
14677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
14777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setCharField(null);
14877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
14977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
15077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setCharField");
15177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
15277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
15377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$setShortField(null);
15477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
15577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
15677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$setShortField");
15777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
15877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
15977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getObjectField(null);
16077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
16177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
16277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getObjectField");
16377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
16477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
16577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getIntField(null);
16677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
16777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
16877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getIntField");
16977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
17077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
17177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getFloatField(null);
17277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
17377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
17477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getFloatField");
17577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
17677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
17777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getLongField(null);
17877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
17977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
18077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getLongField");
18177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
18277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
18377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getDoubleField(null);
18477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
18577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
18677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getDoubleField");
18777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
18877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
18977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getByteField(null);
19077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
19177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
19277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getByteField");
19377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
19477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
19577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getBooleanField(null);
19677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
19777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
19877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getBooleanField");
19977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
20077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
20177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getCharField(null);
20277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
20377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
20477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getCharField");
20577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
20677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    try {
20777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      $opt$getShortField(null);
20877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new RuntimeException("Failed to throw NullPointerException.");
20977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    } catch (NullPointerException npe) {
21077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      check(npe, thisLine += 6, methodLine += 4, "$opt$getShortField");
21177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
21277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
21377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
21477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  static void check(NullPointerException npe, int mainLine, int medthodLine, String methodName) {
21577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    System.out.println(methodName);
21677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    StackTraceElement[] trace = npe.getStackTrace();
21777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    checkElement(trace[0], "Main", methodName, "Main.java", medthodLine);
21877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    checkElement(trace[1], "Main", "main", "Main.java", mainLine);
21977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
22077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
22177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  static void checkElement(StackTraceElement element,
22277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle                           String declaringClass, String methodName,
22377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle                           String fileName, int lineNumber) {
22477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    assertEquals(declaringClass, element.getClassName());
22577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    assertEquals(methodName, element.getMethodName());
22677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    assertEquals(fileName, element.getFileName());
22777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    assertEquals(lineNumber, element.getLineNumber());
22877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
22977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
23077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  static void assertEquals(Object expected, Object actual) {
23177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    if (!expected.equals(actual)) {
23277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      String msg = "Expected \"" + expected + "\" but got \"" + actual + "\"";
23377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new AssertionError(msg);
23477520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
23577520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
23677520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
23777520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  static void assertEquals(int expected, int actual) {
23877520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    if (expected != actual) {
23977520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle      throw new AssertionError("Expected " + expected + " got " + actual);
24077520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle    }
24177520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle  }
24277520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle
24377520bca97ec44e3758510cebd0f20e3bb4584eaCalin Juravle}
244