You don't have to add an empty list to subtokens.
if (tokens != null) {
  subtokens.addAll(tokens);
}