public boolean shouldStore(final LocalExpr expr) {

		// We should store if there are more than 2 type 1 uses or
		// any uses of type greater than one-- which will be indicated
		// by type1s being greater than 2

		// the parameter expr might be null, e.g., if this method is
		// called from "dups" in "!shouldStore((LocalExpr) expr.def())",
		// because if the expression is a use of a parameter in a method,
		// its definition is null. Return true in that case because it
		// will be saved to a local anyway
		if (expr == null) {
			return true;
		}

		final DefInformation DI = (DefInformation) defInfoMap.get(expr);
		if (DI == null) {
			if (StackOptimizer.DEBUG) {
				System.err
						.println("Error in StackOptimizer.shouldStore: parameter not found in defInfoMap:");
				System.err.println(expr.toString());
			}

			return true;
		}

		if ((DI.type1s > 2) || (DI.usesFound < DI.uses)) {
			return true;
		} else {
			return false;
		}
	}