Refactoring delta-oriented product lines to enforce guidelines for efficient type-checking